"""
提示词模板集合
用于题目自动生成和答案智能评分
"""

# 题目生成提示词模板
PROBLEM_GENERATION_TEMPLATES = {
    'code': {
        'basic': """
请根据以下要求生成一道编程题：

主题：{topic}
难度：{difficulty}
编程语言：{language}
知识点：{knowledge_points}

要求：
1. 题目描述清晰明确
2. 包含输入输出格式说明
3. 提供3-5个测试用例
4. 提供标准答案代码
5. 设置合理的时间限制和内存限制

请按照以下JSON格式返回：
{{
    "title": "题目标题",
    "description": "题目描述，包含问题背景、输入输出格式等",
    "difficulty": "{difficulty}",
    "language": "{language}",
    "test_cases": [
        {{
            "input": "输入数据",
            "output": "期望输出",
            "description": "测试用例说明"
        }}
    ],
    "answer": "标准答案代码",
    "time_limit": 1000,
    "memory_limit": 64,
    "points": 10
}}
""",
        
        'algorithm': """
请生成一道算法题，要求：

算法类型：{algorithm_type}
难度：{difficulty}
编程语言：{language}
时间复杂度要求：{time_complexity}

题目要求：
1. 题目应该考察{algorithm_type}算法的应用
2. 包含算法思路的提示
3. 提供多个测试用例，包括边界情况
4. 答案代码应该清晰易懂，包含注释

请按照以下JSON格式返回：
{{
    "title": "题目标题",
    "description": "题目描述，包含算法思路提示",
    "difficulty": "{difficulty}",
    "language": "{language}",
    "test_cases": [
        {{
            "input": "输入数据",
            "output": "期望输出",
            "description": "测试用例说明"
        }}
    ],
    "answer": "标准答案代码",
    "time_limit": 1000,
    "memory_limit": 64,
    "points": 10,
    "algorithm_hint": "算法思路提示"
}}
"""
    },
    
    'choice': {
        'basic': """
请根据以下要求生成一道选择题：

主题：{topic}
难度：{difficulty}
题目类型：{question_type}  # 单选/多选
选项数量：{option_count}

要求：
1. 题目描述准确
2. 选项设置合理，包含干扰项
3. 正确答案明确
4. 包含解析说明

请按照以下JSON格式返回：
{{
    "title": "题目标题",
    "description": "题目描述",
    "difficulty": "{difficulty}",
    "type": "choice",
    "options": [
        {{
            "key": "A",
            "content": "选项内容"
        }}
    ],
    "answer": "正确答案（如：A 或 A,B）",
    "points": 5,
    "explanation": "答案解析"
}}
""",
        
        'programming': """
请生成一道编程相关的选择题：

知识点：{knowledge_point}
难度：{difficulty}
编程语言：{language}

要求：
1. 考察{knowledge_point}知识点
2. 选项包含常见的编程错误
3. 提供详细的解析

请按照以下JSON格式返回：
{{
    "title": "题目标题",
    "description": "题目描述",
    "difficulty": "{difficulty}",
    "type": "choice",
    "options": [
        {{
            "key": "A",
            "content": "选项内容"
        }}
    ],
    "answer": "正确答案",
    "points": 5,
    "explanation": "答案解析"
}}
"""
    },
    
    'blank': {
        'basic': """
请根据以下要求生成一道填空题：

主题：{topic}
难度：{difficulty}
填空数量：{blank_count}

要求：
1. 题目描述清晰
2. 填空位置合理
3. 答案准确
4. 提供解析

请按照以下JSON格式返回：
{{
    "title": "题目标题",
    "description": "题目描述，用___表示填空位置",
    "difficulty": "{difficulty}",
    "type": "blank",
    "answer": "答案1,答案2,答案3",
    "points": 5,
    "explanation": "答案解析"
}}
"""
    },
    
    'short': {
        'basic': """
请根据以下要求生成一道简答题：

主题：{topic}
难度：{difficulty}
答题要求：{requirements}

要求：
1. 题目描述明确
2. 答题要点清晰
3. 提供参考答案
4. 包含评分标准

请按照以下JSON格式返回：
{{
    "title": "题目标题",
    "description": "题目描述",
    "difficulty": "{difficulty}",
    "type": "short",
    "answer": "参考答案",
    "points": 10,
    "scoring_criteria": [
        {{
            "point": "评分要点1",
            "score": 3
        }},
        {{
            "point": "评分要点2", 
            "score": 4
        }},
        {{
            "point": "评分要点3",
            "score": 3
        }}
    ]
}}
"""
    }
}

# 答案评分提示词模板
ANSWER_SCORING_TEMPLATES = {
    'code': """
请对以下编程题答案进行评分：

题目描述：{problem_description}
标准答案：{standard_answer}
学生答案：{student_answer}
编程语言：{language}
测试用例：{test_cases}

评分要求：
1. 检查代码语法正确性
2. 验证逻辑正确性
3. 评估代码质量（可读性、效率等）
4. 给出具体分数和评价

请按照以下JSON格式返回：
{{
    "score": 85,
    "max_score": 100,
    "feedback": "详细的评价反馈",
    "syntax_check": {{
        "valid": true,
        "errors": []
    }},
    "logic_check": {{
        "correct": true,
        "issues": []
    }},
    "code_quality": {{
        "readability": "良好",
        "efficiency": "良好",
        "suggestions": []
    }},
    "detailed_analysis": "详细的分析说明"
}}
""",
    
    'choice': """
请对选择题答案进行评分：

题目：{question}
正确答案：{correct_answer}
学生答案：{student_answer}

请按照以下JSON格式返回：
{{
    "score": 5,
    "max_score": 5,
    "correct": true,
    "feedback": "答案正确/错误"
}}
""",
    
    'blank': """
请对填空题答案进行评分：

题目：{question}
标准答案：{standard_answer}
学生答案：{student_answer}

请按照以下JSON格式返回：
{{
    "score": 4,
    "max_score": 5,
    "correct_count": 4,
    "total_count": 5,
    "feedback": "详细反馈",
    "detailed_scores": [
        {{
            "blank_index": 1,
            "correct": true,
            "score": 1
        }}
    ]
}}
""",
    
    'short': """
请对简答题答案进行智能评分：

题目：{question}
参考答案：{reference_answer}
评分标准：{scoring_criteria}
学生答案：{student_answer}

请按照以下JSON格式返回：
{{
    "score": 8,
    "max_score": 10,
    "feedback": "总体评价",
    "detailed_scores": [
        {{
            "criterion": "评分要点1",
            "score": 3,
            "max_score": 3,
            "feedback": "该要点评价"
        }}
    ],
    "content_analysis": {{
        "relevance": "答案相关性分析",
        "completeness": "完整性分析",
        "accuracy": "准确性分析"
    }},
    "improvement_suggestions": [
        "改进建议1",
        "改进建议2"
    ]
}}
"""
}

# 批量生成提示词
BATCH_GENERATION_TEMPLATE = """
请根据以下要求批量生成题目：

课程主题：{course_topic}
题目类型：{problem_types}
难度分布：{difficulty_distribution}
数量要求：{count_requirements}

具体要求：
1. 题目类型分布：{type_distribution}
2. 难度分布：{difficulty_distribution}
3. 知识点覆盖：{knowledge_points}
4. 题目之间要有区分度

请按照以下JSON格式返回：
{{
    "problems": [
        {{
            "title": "题目标题",
            "description": "题目描述",
            "type": "题目类型",
            "difficulty": "难度",
            "answer": "答案",
            "test_cases": [],
            "options": [],
            "points": 10
        }}
    ],
    "summary": {{
        "total_count": 10,
        "type_distribution": {{}},
        "difficulty_distribution": {{}},
        "estimated_time": "预计完成时间"
    }}
}}
"""

# 题目优化提示词
PROBLEM_OPTIMIZATION_TEMPLATE = """
请对以下题目进行优化：

原题目：{original_problem}
优化要求：{optimization_requirements}

优化方向：
1. 题目描述清晰度
2. 难度合理性
3. 测试用例完整性
4. 答案准确性

请按照以下JSON格式返回：
{{
    "optimized_problem": {{
        "title": "优化后的标题",
        "description": "优化后的描述",
        "difficulty": "优化后的难度",
        "answer": "优化后的答案",
        "test_cases": [],
        "options": []
    }},
    "optimization_changes": [
        "修改说明1",
        "修改说明2"
    ],
    "improvement_score": 85
}}
"""
